<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>编译原理</title>
	</head>
	<body>
		<script>
			/*
			 
			 * 1、编译原理？
			 *   机器只能识别（0 1）
			 * 
			 * 		编译：
			 * 			java
			 * 
			 * 		解释型：javascript
			 * 
			 * 浏览器：
			 * 	js渲染引擎（chrome v8）
			 * 
			 * js解析：
			 * 	  检查语法有没有错误；
			 *   首先将变量的声明和函数的声明全部提到最顶部；
			 *   然后在赋值。
			 *
			 * js严格模式
			 *   变量必须声明；
			 *   函数的调用必须要显示的声明。
			 * */
			//原始代码
			/*var a = 100;
			alert(a); //100
			
			function foo() {
				alert(a); //undefined
				var a = 200;
				alert(a);  //200
			}
			foo();*/
			
			//实际
			/*var a;
			function foo() {
				var a;
			}
			
			a = 100;
			alert(a); //100
			
			function foo() {
				var a;
				alert(a); //undefined
				a = 200;
				alert(a);  //200
			}
			foo();*/

			
			function foo() {
				//严格模式
				'use strict';
//				a = 100;
				console.log(this);
			}
			window.foo();
		</script>
	</body>
</html>
